package cn.lut.ba04;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @user:dell
 * @date:2020年10月27 17:27
 */

/**
 * 引用类型
 * @Autowired: spring框架提供的注解，实现引用类型的赋值。
 * spring中通过注解给引用类型赋值，使用的是自动注入原理 ，支持byName, byType
 * @Autowired:默认使用的是byType自动注入。
 *
 *  位置：1）在属性定义的上面，无需set方法， 推荐使用
 *       2）在set方法的上面
 *
 *  如果要使用byName方式，需要做的是：
 *  1.在属性上面加入@Autowired
 *  2.在属性上面加入@Qualifier(value="bean的id") ：表示使用指定名称的bean完成赋值。
 */
@Component("myStudentInfo1")
public class Student {
    @Value("佑树君")
    private String name;
    @Value("15")
    private int age;
   @Autowired
   @Qualifier("mySchool1")
    private School school;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public School getSchool() {
        return school;
    }

    public void setSchool(School school) {
        System.out.println("setSchool"+school);
        this.school = school;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school=" + school +
                '}';
    }
}
